<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Hash;
//用户管理模块
class UserController extends Controller
{
    /*
        用户添加表单
        /admin/user/add
    */
    public function getAdd(){
        return view('user.add');
    }

    //用户添加
   // /admin/user/insert
    public function postInster(Request $request){
    	//1.验证前台数据
    	$this -> validate($request,[
    		'username'=>'required',
    		'pass'=>'required',
    		'rpass'=>'required|same:pass',
    		'phone'=>'required',
    		'email'=>'required|email',
    		],[
    			'username.required'=>'账号不能为空',
    			'rpass.required'=>'重复密码不能为空',
    			'rpass.same'=>'两次密码不一致',
    			'pass.required'=>'密码不能为空',
    			'phone.required'=>'电话不能为空',
    			'email.email'=>'邮箱格式不正确',
    			'email.required'=>'邮箱不能为空',
    		]);

        //2.过滤字段
        $data = $request ->  except(['_token','rpass']);
        // dd($data);
        // //查询帐号中是否相同
        // $sta = DB::table('user')->select(['username']);
        // dd($sta);

        //3.Hash加密密码
        $data['pass']=Hash::make($data['pass']);
        //写入添加默认token
       $data['token']=str_random(50); //laravel 定义函数随机生成50位的字符串
       //添加默认状态
       $data['status']=1;//1.未激活 2.激活
        //4.完成数据插入
        $res = DB::table('user')->insert($data);

        //5.判断结果
        if($res){
           return redirect('/admin/user/index')->with('success','添加成功');
        }else{
                    //将报错信息 通过with写入session中 目的是为了在模板中输出session中的报错信息
            return back()->withInput()->with('error','添加失败');
        }
    }

    /*
    显示用户数据
    /admin/user/index

    */
    public function getIndex(Request $request){
        //判断有没有搜索条件
        // if($request->input('keywords')){
        //      //查询数据
        //      $data = DB::table('user')->where('username','like','%'.$request->input('keywords').'%')->paginate($request->input('num',5));//对象
        // }else{
        //      //查询数据
        //      $data = DB::table('user')->paginate($request->input('num',5));//对象
        // }                                                
                                                 //$query 查询数据的对象                   
        $data = DB::table('user')->where(function($query) use($request){//use($request) 使用全局变量
            //判断是否有搜索条件
                if($request->input('keywords')){
                    $query->where('username','like','%'.$request->input('keywords').'%');
                }
        })->paginate($request->input('num',5));
        // dd($data);
        //输出分页的超链接
        // $data->render();
        return view('user.index',['list'=>$data,'request'=>$request->all()]);
    }

    /*
        //执行冻结
        /admin/user/feeze/{$v['status']}
        
    */
    public function getFeeze($id){
        $res = DB::table('user')->where('id','=',$id)->first();
    if($res['status']==2){
      $res = DB::table('user')->where('id','=',$id)->update(['status' => 3]);
      if($res){
        return redirect('/admin/user/index')->with('success','冻结成功');
      }else{
        return back()->with('error','冻结失败');
      }
    }elseif($res['status']==3){
        $res = DB::table('user')->where('id','=',$id)->update(['status' => 2]);
      if($res){
        return redirect('/admin/user/index')->with('success','解冻成功');
      }else{
        return back()->with('error','解冻失败');
          }
        }
    }

    /*
        加载修改表单
        /admin/user/edit{id}

    */
    public function getEdit($id){
        //查询修改数据
        $data = DB::table('user')->where('id','=',$id)->first();
        return view('user.edit',['vo'=>$data]);
    }

    /*
        执行修改
        /admin/user/update

    */
    public function postUpdate(Request $request){
        // dd($request->all());
        //获取数据
        $data = $request->only(['username','phone','email']);
        $res = DB::table('user')->where('id','=',$request->input('id'))->update($data);

        if($res){
            return redirect('/admin/user/index')->with('success','修改成功');
        }else{
            return back()->with('error','修改失败');
        }
    }
}